package cn.walls1717.mall.modules.pms.service;

import cn.walls1717.mall.modules.pms.dto.ProductConditionDTO;
import cn.walls1717.mall.modules.pms.dto.ProductSaveParamDTO;
import cn.walls1717.mall.modules.pms.dto.ProductUpdateInitDTO;
import cn.walls1717.mall.modules.pms.model.PmsProduct;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 商品信息 服务类
 * </p>
 *
 * @author walls1717
 * @since 2022-04-09
 */
public interface PmsProductService extends IService<PmsProduct> {

    /**
     * 带搜索功能的分页查询
     * @param condition 数据传输对象
     * @return 分页数据
     */
    Page<PmsProduct> pageList(ProductConditionDTO condition);

    /**
     * 添加商品
     * @param productSaveParamDTO 添加商品数据传输对象
     * @return true：添加成功；false：添加失败
     */
    boolean createProduct(ProductSaveParamDTO productSaveParamDTO);

    /**
     * 商品添加
     * @param productSaveParamDTO 数据传输对象
     * @return true：添加成功；false：添加失败
     */
    Boolean updateProduct(ProductSaveParamDTO productSaveParamDTO);

    /**
     * 设置上架、新品、推荐状态
     * @param ids 待设置数据的ids
     * @param product 状态对象
     * @return 是否设置成功
     */
    boolean updateStatus(List<Long> ids, PmsProduct product);

    /**
     * 初始化商品编辑页面数据
     * @param id 待编辑商品id
     * @return 此id对应的商品数据
     */
    ProductUpdateInitDTO getOneProduct(Long id);

}
